package com.smart.thrift.base;

public interface ThriftSerializer {

    /**
     * 序列化参数
     *
     * @param param 参数
     * @return {@link String}
     */
    String serializeParameter(Object param);


    /**
     * 反序列化参数
     *
     * @param paramStr  参数 str
     * @param paramType 参数类型
     * @return {@link T}
     */
    <T> T deserializeParameter(String paramStr, Class<T> paramType);

    /**
     * 序列化返回值
     *
     * @param returnValue 返回值
     * @return {@link String}
     */
    String serializeReturnValue(Object returnValue);

    /**
     * 反序列化返回值
     *
     * @param returnStr  返回str
     * @param returnType 返回类型
     * @return {@link T}
     */
    <T> T deserializeReturnValue(String returnStr, Class<T> returnType);
}
